Pandas 根据某些特定列的值进行求和 您所在的位置:网站首页 pandas 列数值求和 Pandas 根据某些特定列的值进行求和

Pandas 根据某些特定列的值进行求和

2024-02-03 22:49| 来源: 网络整理| 查看: 265

Pandas 根据某些特定列的值进行求和

在本文中,我们将介绍当我们想要根据某些特定列的值进行求和时,如何使用 Pandas。

对于一个数据集,我们可能要对列中的某些值进行聚合,以便更好地理解数据。例如,我们有一个包含销售数据的数据集,我们想根据客户类型来计算出每个客户类型的销售额。

下面是一个虚拟的数据集示例:

import pandas as pd data = {"客户类型": ["普通", "会员", "普通", "高级会员", "高级会员", "普通"], "销售额": [100, 200, 300, 400, 500, 600]} df = pd.DataFrame(data) print(df)

输出结果:

客户类型 销售额 0 普通 100 1 会员 200 2 普通 300 3 高级会员 400 4 高级会员 500 5 普通 600

在该示例中,我们有一个名为“客户类型”的列和一个名为“销售额”的列。我们想知道每个客户类型的销售额。

阅读更多:Pandas 教程

根据条件求和

为了根据条件进行求和,我们可以使用 Pandas 中的 groupby() 函数和 sum() 函数。首先,我们需要对数据集进行组合,以便根据“客户类型”列进行分组。然后,对“销售额”列进行求和。

# 根据客户类型分组,并求和销售额 grouped_df = df.groupby("客户类型")["销售额"].sum() print(grouped_df)

输出结果:

客户类型 会员 200 普通 1000 高级会员 900 Name: 销售额, dtype: int64

以上代码的输出结果告诉我们,会员的销售额为 200,普通客户的销售额为 1000,高级会员的销售额为 900。

根据多个条件求和

有时候,我们需要根据多个条件对列进行求和。例如,假设我们想知道每个客户类型在每个地区的总销售额。

在这个示例中,我们需要先根据“客户类型”和“地区”分组,然后对“销售额”列进行求和。

data = {"客户类型": ["普通", "会员", "普通", "高级会员", "高级会员", "普通", "会员", "高级会员", "普通"], "地区": ["北京", "上海", "北京", "上海", "北京", "上海", "北京", "上海", "上海"], "销售额": [100, 200, 300, 400, 500, 600, 700, 800, 900]} df2 = pd.DataFrame(data) print(df2)

输出结果:

客户类型 地区 销售额 0 普通 北京 100 1 会员 上海 200 2 普通 北京 300 3 高级会员 上海 400 4 高级会员 北京 500 5 普通 上海 600 6 会员 北京 700 7 高级会员 上海 800 8 普通 上海 900

接着,我们可以根据“客户类型”和“地区”列对数据进行分组求和。

# 根据客户类型和地区分组,并求和销售额 grouped_df2 = df2.groupby(["客户类型", "地区"])["销售额"].sum() print(grouped_df2)

输出结果:

客户类型 地区 会员 上海 200 北京 700 普通 上海 1500 北京 400 高级会员 上海 1200 北京 500 Name: 销售额, dtype: int64

以上代码的输出结果告诉我们,在上海,会员的销售额为 200,普通客户的销售额为 1500,高级会员的销售额为 1200。在北京,会员的销售额为 700,普通客户的销售额为 400,高级会员的销售额为 500。

根据条件前后求和

有时候,我们需要根据前后条件对列进行求和。例如,假设我们想知道每个客户类型的前一笔销售额和当前的销售额之和。

在这个示例中,我们需要根据“客户类型”分组,然后对“销售额”列进行求和。然后,我们可以使用 Pandas 中的 shift() 函数,来获取前一笔销售额,并将其加到当前销售额上。

data = {"客户类型": ["普通", "会员", "普通", "高级会员", "高级会员", "普通", "会员", "高级会员", "普通"], "销售额": [100, 200, 300, 400, 500, 600, 700, 800, 900]} df3 = pd.DataFrame(data) # 根据客户类型分组,并求和销售额 grouped_df3 = df3.groupby("客户类型")["销售额"].sum() # 获取前一笔销售额,并将其加到当前销售额上 df3["前一笔销售额"] = df3.groupby("客户类型")["销售额"].shift(1) df3["前一笔销售额"].fillna(0, inplace=True) df3["前后销售额和"] = df3["前一笔销售额"] + df3["销售额"] print(df3)

输出结果:

客户类型 销售额 前一笔销售额 前后销售额和 0 普通 100 0.0 100.0 1 会员 200 0.0 200.0 2 普通 300 100.0 400.0 3 高级会员 400 0.0 400.0 4 高级会员 500 400.0 900.0 5 普通 600 300.0 900.0 6 会员 700 200.0 900.0 7 高级会员 800 500.0 1300.0 8 普通 900 600.0 1500.0

以上代码的输出结果告诉我们,在普通客户类型中,第一笔销售额为 100,第二笔销售额为 300,前后销售额和为 400。在会员客户类型中,第一笔销售额为 200,第二笔销售额为 700,前后销售额和为 900。在高级会员客户类型中,第一笔销售额为 400,第二笔销售额为 500,前后销售额和为 900。

总结

在 Pandas 中,我们可以使用 groupby() 函数和 sum() 函数来根据条件进行求和。如果我们想根据多个条件进行求和,可以将列名作为列表传递给 groupby() 函数。如果我们想根据前后条件进行求和,可以使用 shift() 函数来获取前一笔销售额,并将其加到当前销售额上。

使用 Pandas 来根据条件进行求和可以帮助我们更好地理解数据,发现其中的模式和规律,从而做出更好的决策。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有